package com.campuscarbooking.api.service;

import com.campuscarbooking.api.model.Reservation;
import com.campuscarbooking.api.model.BusSchedule;

/**
 * Service for sending notifications to users
 */
public interface NotificationService {

    /**
     * Send notification for a new reservation
     * @param reservation The newly created reservation
     */
    void notifyReservationCreated(Reservation reservation);

    /**
     * Send notification for a confirmed reservation
     * @param reservation The confirmed reservation
     */
    void notifyReservationConfirmed(Reservation reservation);

    /**
     * Send notification for a cancelled reservation
     * @param reservation The cancelled reservation
     */
    void notifyReservationCancelled(Reservation reservation);

    /**
     * Send reminder notification for upcoming reservations
     * @param reservation The reservation to send reminder for
     */
    void sendReservationReminder(Reservation reservation);

    /**
     * Send notification for schedule updates
     * @param schedule The updated schedule
     * @param updateType Type of update (CREATED, UPDATED, CANCELLED)
     */
    void notifyScheduleUpdated(BusSchedule schedule, String updateType);
} 